#ifndef _PerspectiveCamera_H_
#define _PerspectiveCamera_H_

#pragma once
#include "Camera.h"

class PerspectiveCamera : public Camera {
private:
	Vector3 eye, dir, up, right;
	Double fov, fovScale;
	Double blurScale = 0;

public:
	PerspectiveCamera() : Camera() {
		setFov();
	}
	~PerspectiveCamera() {};

	void setFov(Double fov = 70);
	void setEyePosition(const Vector3 &eye, const Normal3 &dir, const Normal3 &up = Normal3(0, 1, 0));

	void setBlurScale(Double blur = 0);

	void generateRay(Ray &ray, const Vector2 &pixelSample, const Vector2 &apertureSample) const;
};

#endif // _PerspectiveCamera_H_